package br.ufrpe.bsi.pvs.xml.transformer;

import java.util.List;

import org.jdom2.Document;
import org.jdom2.Element;

import br.ufrpe.bsi.pvs.model.roupa.Roupa;
import br.ufrpe.bsi.pvs.view.assistant.Query;
import br.ufrpe.bsi.pvs.xml.XMLUtil;
import br.ufrpe.bsi.pvs.xml.request.QueryRequestProcessor;
import br.ufrpe.bsi.pvs.xml.response.QueriedResponseProcess;

public class QueryXML {

	public static Document parseQueryRequest(Query query) {
		Document docF = QueryRequestProcessor.getQueryRequestDocument("dica");
		Element classe = docF.getRootElement().getChild(XMLUtil.ELEM_REQUEST)
				.getChild(XMLUtil.ELEM_CLASS);

		Element genero = new Element("genero");
		genero.addContent(String.valueOf(query.getGenero().intValue()));

		Element peso = new Element("peso");
		peso.addContent(String.valueOf(query.getPeso()));

		Element altura = new Element("altura");
		altura.addContent(String.valueOf(query.getAltura()));
		
		Element nota = new Element("nota");
		nota.addContent(5 + "");

		Element tipoCorporeo = new Element("tipoCorporeo");
		tipoCorporeo.addContent(query.getTipoc().getTipoCorporeo());

		Element estilo = new Element("estilo");
		estilo.addContent(query.getEstilo().getNomeEstilo());

		classe.addContent(genero);
		classe.addContent(peso);
		classe.addContent(altura);
		classe.addContent(nota);
		classe.addContent(tipoCorporeo);
		classe.addContent(estilo);

		return docF;
	}

	public static Document createResponseDocument(List<Roupa> roupas) {
		Document doc = QueriedResponseProcess
				.getQueriedResponseDocument("dica");
		Element response = doc.getRootElement().getChild(XMLUtil.ELEM_RESPONSE);

		for (Roupa roupa : roupas) {
			Element roupaElem = new Element("roupa");

			Element id = new Element("ID");
			id.addContent("" + roupa.getId());

			Element descricao = new Element("Descricao");
			descricao.addContent("" + roupa.getDescricao());

			Element quantEstoque = new Element("QuantEstoque");
			quantEstoque.addContent("" + roupa.getQuantEstoque());

			Element genero = new Element("Genero");
			genero.addContent("" + roupa.getGenero().intValue());

			Element estilo = new Element("Estilo");
			estilo.addContent("" + roupa.getEstilo().getNomeEstilo());

			Element tipoRoupa = new Element("TipoRoupa");
			tipoRoupa.addContent("" + roupa.getTipoRoupa().getNome());

			Element tamanho = new Element("Tamanho");
			tamanho.addContent("" + roupa.getTamanho().getTamanho());

			roupaElem.addContent(id);
			roupaElem.addContent(descricao);
			roupaElem.addContent(quantEstoque);
			roupaElem.addContent(genero);
			roupaElem.addContent(estilo);
			roupaElem.addContent(tipoRoupa);
			roupaElem.addContent(tamanho);
			
			response.addContent(roupaElem);
		}

		return doc;
	}

}
